package cn.ctbu.xiaopeng.studentscoremanage.service;


import cn.ctbu.xiaopeng.studentscoremanage.dao.CourseRepository;
import cn.ctbu.xiaopeng.studentscoremanage.dao.SCRepository;
import cn.ctbu.xiaopeng.studentscoremanage.entity.Course;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author xiaopeng
 * @version 1.0
 */
@Service
public class CourseService {
    @Autowired
    private CourseRepository courseRepository;

    @Autowired
    private SCRepository scRepository;

    /**
     * 根据课程名称模糊查询
     *
     * @param cName
     * @return
     */
    public List<Course> findCourseByNameLike(String cName) {
        return courseRepository.findByNameLike(cName);
    }

    /**
     * 根据cno查询课程
     *
     * @param cno
     * @return
     */
    public Course findByCno(String cno) {
        return courseRepository.findByCno(cno);
    }

    /**
     * 查询所有课程
     *
     * @return
     */
    public List<Course> findAll() {
        return courseRepository.findAll();
    }

    /**
     * 保存课程
     *
     * @param course
     * @return
     */
    public Course insert(Course course) {
        return courseRepository.save(course);
    }

    /**
     * 更新课程人数
     *
     * @param cno
     * @param cNums
     * @return
     */
    public void updateCNums(String cno, Integer cNums) {
        courseRepository.updateCNums(cno, cNums);
    }

    /**
     * 根据cno删除课程
     *
     * @param cno
     */
    public void deleteByCno(String cno) {
        courseRepository.deleteByCno(cno);
    }

    /**
     * 根据选课表更新课程人数
     */
    public void updateCNumsBySC() {
        List<Course> courses = courseRepository.findAll();
        for (Course course : courses) {
            updateCNums(course.getCno(),
                    Math.toIntExact(scRepository.countByCno(course.getCno())));
        }
    }

}


